---
title: "R Notebook"
output: html_notebook
---

```{r, echo = FALSE}
data <- read.csv("accidentes_transito_con_victimas_2016_2022.csv", sep = ";")
```

```{r, echo = FALSE}
library(dplyr)
library(ggplot2)

#para las caras de chernoff
```

```{r, echo=FALSE}
#obtenemos los meses, dias y la ruta donde
#mas accidentes hay
meses_dias_RU_mas_accidentes <- data %>%
  filter(grepl("^[A-L]\\..*\\s(Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Setiembre|Octubre|Noviembre|Diciembre)$", Mes)) %>%
  filter(grepl("^[1-7]\\.(Domingo|Lunes|Martes|Miércoles|Jueves|Viernes|Sábado)$", Día)) %>%
  group_by(Mes,Día,Ruta) %>%
  summarise(MDtotal_accidentes = n()) %>%
  arrange(desc(MDtotal_accidentes))

registros_mas_frecuentes <- meses_dias_RU_mas_accidentes %>%
  group_by(Mes) %>%
  slice(1)
  
numero_mes <- seq(1, 12, length.out = nrow(registros_mas_frecuentes))
numero_mes <- as.integer(numero_mes)
registros_mas_frecuentes <- cbind(registros_mas_frecuentes, NumeroMes = numero_mes)

# Crear una columna para el número de día según el día de la semana en registros_mas_frecuentes
registros_mas_frecuentes$ColorDia <-ifelse(registros_mas_frecuentes$Día == "1.Domingo", "blue",
                                            ifelse(registros_mas_frecuentes$Día == "2.Lunes", "red",
                                            ifelse(registros_mas_frecuentes$Día == "3.Martes", "yellow",
                                            ifelse(registros_mas_frecuentes$Día == "4.Miércoles", "cyan",
                                            ifelse(registros_mas_frecuentes$Día == "5.Jueves", "darkgreen",
                                            ifelse(registros_mas_frecuentes$Día == "6.Viernes", "brown",
                                            ifelse(registros_mas_frecuentes$Día == "7.Sábado", "black", NA)))))))

registros_mas_frecuentes$idRuta <-ifelse(registros_mas_frecuentes$Ruta == "Cantonal", 1)
                                          
registros_mas_frecuentes$Mes <- gsub("[A-L]\\.", "", registros_mas_frecuentes$Mes)

registros_mas_frecuentes$Día <- gsub("[1-7]\\.", "", registros_mas_frecuentes$Día)

```

```{r, echo = FALSE}

grafico_chernoff <- ggplot(registros_mas_frecuentes, aes(x = NumeroMes, y = idRuta,label1 = Mes,label2 = Ruta,label3 = Día)) +
  geom_point(size = 9,colour = registros_mas_frecuentes$ColorDia) +
  labs(x = "Mes",y = "Ruta") +
  geom_text(aes(label = "👁️ 👁️"),vjust = -5, size = 3) +  # Agregamos ojos
  geom_text(aes(label = "👄"), vjust = 5, size = 2) +
  theme_bw()

# Convertimos el gráfico ggplot2 en uno interactivo con plotly
grafico_interactivo <- ggplotly(grafico_chernoff,tooltip = c("label1", "label2", "label3"))

# Mostramos el gráfico interactivo
grafico_interactivo


# 12 caras por los meses, color cara dias ... y tamanho cara ruta



```
